Java复制数组引用
我有一个数组int[3][3],初始位置如下:
(A)
block[0][0] = 1;
block[0][1] = 1;
block[0][2] = 1;
block[1][0] = 1;
block[1][1] = 1;
block[1][2] = 1;
block[2][0] = 1;
block[2][1] = 0;
block[2][2] = 1;
//Visually
1 1 1
1 1 1
1 0 1
我有一个方法,它接受“0”元素并随上面的元素更改,因此下一个状态是:
(B)
1 1 1
1 0 1
1 1 1
但问题是,我想用这个位置创建一个新的数组(称为aux),并且不要覆盖块数组(a)
这是我的密码:
//Creating array B
int[][] aux = new int[3][3];
aux = block; //load the values of original array
aux[line][row] = aux[line-1][row];
aux[line-1][row] = 0;
但是当我检查输出时,我也覆盖了原始数组(块)
因此,我让数组块和数组AUX具有相同的值,并且没有将数组块与原始数据一起保留
===========================================================================
编辑:
我尝试使用clone和copyOf函数,但结果也影响了原始阵列。 这是我的密码:
System.out.println("INITIAL BLOCK VALUES");
System.out.println(
bloco[0][0] +""+
bloco[0][1] +""+
bloco[0][2] +
"\n"+
bloco[1][0]+
bloco[1][1]+
bloco[1][2]+
"\n"+
bloco[2][0] +
bloco[2][1] +
bloco[2][2]
);
//Cloning original array to a new one
int[][] aux = bloco.clone();
//Here what I'm doing is changing the first element of AUX, just for test
aux[0][0] = 9;
// Block array shouldnt be affected! Lets check it out:
System.out.println("FINAL BLOCK VALUES");
System.out.println(
bloco[0][0] +""+
bloco[0][1] +""+
bloco[0][2] +
"\n"+
bloco[1][0]+
bloco[1][1]+
bloco[1][2]+
"\n"+
bloco[2][0] +
bloco[2][1] +
bloco[2][2]
);
输出为:
INITIAL BLOCK VALUES
111
111
101
FINAL BLOCK VALUES
911
111
101
有什么想法吗
OBS:此代码位于名为“Node”的类的函数中,构造函数是:
public Nodo( int[][] blocos )
{
this.bloco = blocos;
}
# 1 楼答案
此程序显示在不更改原始数组值的情况下将原始数组复制到新数组中
outpur:aux的数组是